#include "cli_log.h"

static int log_level = 3;   // default为3, 日志的级别

/**
 * 日志初始中化，初始化时调用
 *
 * @param level      日志的级别：3 error,4 warning 5 normal,notice,6 info 7 debug
 * @param progname   程序名
 */
void cli_log_init(int level, const char *progname)
{
    log_level = level;
    openlog(progname, LOG_PID, LOG_LOCAL6);
}

/**
 * syslog重启 
 *
 * @param level      日志级别
 * @param progname   程序名
 */
void cli_log_reset(int level, const char *progname)
{
    log_level = level;
    closelog();
    openlog(progname, LOG_PID, LOG_LOCAL6);
}

/**
 * syslog关闭
 */
void cli_log_exit(void)
{
    closelog();
}

void CLI_ERRLOG(const char *format, ...) 
{
    if (log_level >= LOG_ERR)
    {
        va_list ap;
        va_start(ap,format);
        vsyslog(LOG_ERR, format,ap);
        va_end(ap);
    }
}

void CLI_WARNINGLOG(const char *format, ...) 
{
    if (log_level >= LOG_WARNING)
    {
        va_list ap;
        va_start(ap,format);
        vsyslog(LOG_WARNING, format,ap);
        va_end(ap);
    }
}

void CLI_NOTICELOG(const char *format, ...) 
{
    if (log_level >= LOG_NOTICE)
    {
        va_list ap;
        va_start(ap,format);
        vsyslog(LOG_NOTICE, format,ap);
        va_end(ap);
    }
}

void CLI_INFOLOG(const char *format, ...) 
{
    if (log_level >= LOG_INFO)
    {
        va_list ap;
        va_start(ap,format);
        vsyslog(LOG_INFO, format,ap);
        va_end(ap);
    }
}

void CLI_DEBUGLOG(const char *format, ...) 
{
    if (log_level >= LOG_DEBUG)
    {
        va_list ap;
        va_start(ap,format);
        vsyslog(LOG_DEBUG, format,ap);
        va_end(ap);
    }
}

